#pragma once


namespace Putin{
/**
 * Abstract Generic state class
 */
class State
{
public:
	State(){}
	virtual ~State(){}

	/**
	 * Init. code when entering this state
	 */
	virtual void enter() = 0;
	
	/**
	 * Exit code when leaving this state
	 */
	virtual void exit() = 0;
	
	/**
	 * Code to pause the state
	 */
	virtual void pause() = 0;

	/**
	 * Code to resume the state after pause
	 */
	virtual void resume() = 0;

	/**
	 * Perform an update of the state
	 */
	virtual void update() = 0;
};

} // end namespace